//------------------------------------------------------------------------------
//SFWK Framework
//Copyright (C) 2011 SQLI

//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.

//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.
//------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace SFWK.Core
{
    [DataContract]
    public abstract class SFWKError
    {
        //Contains Exception parameters
        
        public List<String> Parameters
        {
            get { return _parameters; }
            set { _parameters = value; }
        }
        private List<String> _parameters = new List<string>();
        //string _errorCode;
        
        public abstract string ErrorCode { get; set; }

        
        public Exception InnerException { get; set; }

        #region Constructors
        /// <summary>
        /// Constructor accpting string
        /// </summary>
        /// <param name="message">Error message</param>
        public SFWKError(string[] paramList)
        {
            if (paramList != null) Parameters.AddRange(paramList);
        }
        public SFWKError()
        {
        }


        #endregion

        public SFWKError AddParam(string aParam)
        {
            Parameters.Add(aParam);
            return this;
        }

        public override string ToString()
        {
            return Parameters.ToArray().ToString();
        }

    }
}

